import unittest, time, os, json
from test_logic.test_logic import *
from tools.log import LOG
from config.config import *
from appium import webdriver
from tools.save_result import save_result
from tools.read_xlsx import read_xlsx
from main_start import *


class startCase(unittest.TestCase):

    def setUp(self):
        # 启动设备
        self.driver = webdriver.Remote(SERVRE, desired_caps)
        # 因应用需要时间加载，此处需设置等待时间
        self.driver.implicitly_wait(5)
        LOG.info("测试用例开始执行")

    def tearDown(self):
        LOG.info('测试用例执行完毕')
        time.sleep(5)
        #self.driver.delete_all_cookies()
        self.driver.quit()

    def testcase(self):
        test_result = Testlogic(driver=self.driver).Testcas()  # 测试结果
        sheet = read_xlsx()
        except_result = sheet[0].cell(sheet[1], 7).value  # 预期结果
        except_method = sheet[0].cell(sheet[1], 6).value  # 断言标准

        # 以下为判断断言是否成立
        err_msg = yaml_file_name + "文件测试结果不通过"
        if except_method == "相等":  # 测试结果 与 预期结果 相等
            a = self.assertEqual(test_result, except_result, err_msg)

        elif except_method == "不相等":  # 测试结果 与 预期结果 不相等
            self.assertNotEqual(test_result, except_result, err_msg)
        elif except_method == "包含":  # 预期结果 包含 在 测试结果之中
            self.assertIn(except_result, test_result, err_msg)
        elif except_method == "不包含":  # 预期结果 不包含 在 测试结果之中
            self.assertNotIn(except_result, test_result, err_msg)
        elif except_method == "大于":  # 测试结果 大于 预期结果
            self.assertGreater(except_result, test_result, err_msg)
        elif except_method == "大于等于":  # 测试结果 大于等于 预期结果
            self.assertGreaterEqual(except_result, test_result, err_msg)
        elif except_method == "小于":  # 测试结果 小于 预期结果
            self.assertLess(except_result, test_result, err_msg)
        elif except_method == "小于等于":  # 测试结果 小于等于 预期结果
            self.assertLessEqual(except_result, test_result, err_msg)
        else:
            raise Exception("您输入的断言标准暂不支持")

        sheet[0].cell(sheet[1], 9).value = a or err_msg
        sheet[2].save(excel_path + excel_file_name)

